#pragma once

#include "Foundation.h"

class Room;

class Hotel {
public:
				Hotel( string file );
				~Hotel();
	string 		getFileName();
	
	/* Base commands */
	void 		bookRoom();
	void 		cancelRoom();
	void 		checkIn();
	void 		checkOut();
	void 		addExpenses();
	void 		WriteToFile();
	
	/* E commands */
	void 		editDatesBeforeCheckIn();
	void 		editDepartureDateAfterCheckIn();
	void 		changeRoom();
	
	/* O commands */
	void 		displayInfo();
	void 		displaySuites();
	void 		displayReservationsByPerson();
	void 		whenIsRoomAvailable();
	void 		displayReservationsForRoom();
	void 		displayResidentInRoom();
	void 		displayAvailableRoomsInPeriod();

	/* Getter methods */
	float 		getBreakfastPrice();
	
protected:
	List 		*rooms[3];	// 0:single   1:double   2:suite

	string		name;
	string		address;
	string		postalCode;
	string		mailAddress;
	string		fileName;

	int			phone;
	int			fax;
	int			breakfastPrice;
	int			extraBedPrice;

	int			numFacilities;
	string		*facilities;
	
	List*		getReservations(string customerName);
	Room*		getRoom();
	Room*		getRoom(int roomNumber);
	Room*		getRoom(Date d1, Date d2, bool breakfast, int type, int bedReq);
};


